package eteam.aps.service;

import eteam.aps.common.helper.JsonPage;
import eteam.aps.model.entity.DataDictionaryCategory;
import eteam.aps.model.vo.*;

import java.util.List;
import java.util.Map;

/**
 * 字典分类业务逻辑接口
 *
 * @author yiyikai
 */
public interface DataDictionaryCategoryService {

    /**
     * 添加字典分类
     *
     * @param category 封装的待添加数据
     * @return 受影响的行数
     */
    int insert(DataDictionaryCategory category) throws Exception; 

    /**
     * 删除字典分类 ---逻辑删除,修改状态为作废
     *
     * @param fId 字典分类内码
     * @return 受影响的行数
     */
    int delete(String fId) throws Exception;

    /**
     * 修改字典分类
     *
     * @param category 封装的待修改数据
     * @return 受影响的行数
     */
    int update(DataDictionaryCategory category) throws Exception;

    /**
     * 查询 单个 ---用于展示字典分类的全部信息
     *
     * @param fId 字典分类内码
     * @return 字典分类
     */
    DataDictionaryCategoryDetailsVo selectByFId(String fId);

    /**
     * 查询 单个 ---用于展示字典分类的可修改信息
     *
     * @param fId 字典分类内码
     * @return 字典分类修改信息
     */
    DataDictionaryCategoryUpdateVo selectUpdate(String fId);

    /**
     * 查询 全部 模糊 ---查询筛选条件为fDdcCode，fDdcName
     *
     * @param page     第几页 从1开始 必传
     * @param pageSize 每页条数 必传
     * @param map      筛选条件
     * @return 字典分类基础信息
     */
    JsonPage<DataDictionaryCategoryBasicsVo> selectAll(Map<String, Object> map, int page, int pageSize);

    /**
     * 查询 所有 模糊 ---查询筛选条件为fDdcName;不包括状态为作废的数据
     *
     * @param map 筛选条件
     * @return 可选择的字典分类
     */
    List<DataDictionaryCategoryInquireVo> selectAllInquire(Map<String, Object> map);

    /**
     * 查询字典分类内码记录数
     *
     * @param fId 字典分类内码
     * @return 记录数
     */
    int selectCountByFId(String fId);

    /**
     * 查询字典分类编号记录数
     *
     * @param fDdcCode 字典分类编码
     * @return 记录数
     */
    int selectCountByFDdcCode(String fDdcCode);

    /**
     * 查询字典分类名称记录数
     *
     * @param fDdcName 字典分类名称
     * @return 记录数
     */
    int selectCountByFDdcName(String fDdcName);

    /**
     * 查询字典分类状态码
     *
     * @param fId 字典分类内码
     * @return 状态值
     */
    int selectByFState(String fId);

    /**
     * 查询字典分类目录树需要的数据
     * @return 字典分类fId、字典分类编号、字典分类名称
     */
    List<DataDictionaryCategoryTreeVo> selectFDdcTree();


}